package com.education.platform.service;

import java.util.concurrent.TimeUnit;

/**
 * Redis服务接口
 */
public interface RedisService {

    /**
     * 设置键值
     */
    void set(String key, Object value);

    /**
     * 设置键值（带过期时间）
     */
    void set(String key, Object value, long timeout);

    /**
     * 设置键值（带过期时间和时间单位）
     */
    void set(String key, Object value, long timeout, TimeUnit unit);

    /**
     * 获取值
     */
    <T> T get(String key);

    /**
     * 删除键
     */
    void delete(String key);

    /**
     * 判断键是否存在
     */
    boolean hasKey(String key);

    /**
     * 设置过期时间
     */
    void expire(String key, long timeout, TimeUnit unit);

    /**
     * 原子递增
     */
    Long increment(String key);

    /**
     * 原子递增（带过期时间）
     */
    Long increment(String key, long timeout);

    /**
     * 释放分布式锁
     */
    void unlock(String key);
}
